package densetsu.model;

import java.util.List;
import java.util.Observer;

import densetsu.model.map.GridMap;
import densetsu.model.players.Player;

/**
 * Model interface.
 * 
 * @author Koen
 * 
 */
public interface Model {

	public GridMap getMap ( );

	public Player getPlayer ( );

	public void movePlayer ( Direction d );

	/**
	 * I don't know how useful this method will prove to be... We'll see.
	 * 
	 * @param p
	 *            the enemy that should be moved
	 * @param d
	 *            the direction it has to be moved in
	 */
	public void moveEnemy ( Player p, Direction d );

	public List< Player > getEnemies ( );

	/**
	 * To make this easiest, just have your model class extend the Observable
	 * class.
	 * 
	 * @param o
	 *            observer to add to the model.
	 */
	public void addObserver ( Observer o );

}
